package com.pb.metadata.mapper;

import com.pb.infra.oth.entity.common.DictVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 系数管理
 * @author lzh
 * @date 2023/03/21
 */
@Mapper
@Repository
public interface CoefficientMapper {

    /**
     * 查询所有系数，生成树结构
     *
     * @return
     */
    List<Map<String, Object>> selParaTree(Map<String, Object> map);

    /**
     * 添加系数树
     * @param map
     */
    void addParaTree(Map<String, Object> map);

    /**
     * 修改系数树
     * @param map
     */
    void editParaTree(Map<String, Object> map);

    /**
     * 删除系数树
     * @param paraIds
     */
    void delParaTree(@Param("corpId") String corpId, @Param("paraIds") List paraIds);

    /**
     * 查询最大系数id（paraID）
     * @return
     */
    Integer selMaxId();

    /**
     * 校验系数名字是否存在
     *
     * @return
     */
    List<Map<String, Object>> validUniqueName(Map<String, Object> map);

    /**
     * 查询系数值
     * @param map
     * @return
     */
    List<Map<String, Object>> selParaVal(Map<String, Object> map);

    /**
     * 查询最大的id
     * @return
     */
    Integer selId();

    /**
     * 添加系数值
     * @param map
     */
    void addParaVal(Map<String, Object> map);

    /**
     * 修改系数值
     * @param map
     */
    void editParaVal(Map<String, Object> map);

    /**
     * 删除选中的系数值
     * @param list
     */
    void delParaVal(List<Integer> list);

    /**
     * 删除参数下的系数值
     * @param corpId 法人id
     * @param paraIds 参数id
     */
    void delParaAllVal(@Param("corpId") String corpId, @Param("paraIds") List paraIds);

    /**
     * 查询当前生效日期下的系数值数据
     * @param map
     * @return
     */
    List<Map<String, Object>> validParaValue(Map<String, Object> map);

    /**
     * 查询科目树
     * @param map
     * @return
     */
    List<Map<String, Object>> getSubjTree(Map<String, Object> map);

    /**
     * 查询产品树
     * @param map
     * @return
     */
    List<Map<String, Object>> getPrdtTree(Map<String, Object> map);


    /**
     * 获取维度树
     * @param paramMap 请求参数{corpId 法人ID   dimNo 维度ID}
     * @return
     */
    List<DictVO> getDimTree(Map<String, String> paramMap);
}
